/***************************************************************************************************
  Copyright(C)   2011-2013 Global Link Comm. Co., Ltd.
  All rights reserved.
  File Name: agreementmsg.h

  Description: 更新SLCD的协议

   包头和包尾
    |-包头(2个字节0x3c21)-|-数据体长度(2个字节)-|-数据体(字节数由前面的标明)-|-包尾(2个字节0x213E)-|
    FRAMEHEAD1 = 0x3C;
    FRAMEHEAD2 = 0x21;
    FRAMETAIL1 = 0x21;
    FRAMETAIL2 = 0x3E;


  ***************************************************************************************************/
#ifndef AGREEMENTMSG_H
#define AGREEMENTMSG_H

#include <QtGlobal>
#include "routemsg.h"

#pragma once

#define PRICMD_UPDATEPIDS		2                   //更新PIDS
#define PRICMD_CONTROLPIDS              6                   //

#define PATHLEN							255
#define IPLEN							30
#define MD5LEN							50


#ifndef UBYTE
//        typedef unsigned char   UBYTE;
        typedef char   UBYTE;

#endif

#ifndef ULONG
        typedef unsigned long   ULONG;
#endif



//const unsigned char PIDS_OK=                                     1;  //�ɹ�
//const unsigned char PIDS_FAIL=					 0;  //ʧ��

//typedef struct
//{
//        quint8	PriCmd;		//
//        quint8	SubCmd;		//
//        ULONG	UID;		//
//} Base;


#define TYPE_UPDATEPIDS         1                   //更新PIDS


//***************************************************
//*   server-->client
//***************************************************

#define  PKGSIZE_SIZE         1000       //数据包大小

//发送文件数据包
typedef struct
{
  Base 	BaseFiles;
  quint32 fileLen;              //文件长度
  quint32 pkgCount;             //文件总包数
  quint32 pkgNum;               //当前包号
  quint32 pkgSize;              //数据包长度
  quint32 checkSum;             //校验位
  char  fileName[48];           //文件名
  char    pkg[PKGSIZE_SIZE];    //文件数据
  quint64 position;             //位置
} PIDS_FilePkg;

//发送完成结构体
typedef struct
{
  Base      BaseFiles;
  char      fileName[48];                       //文件名
  char      MD5checkSum[64];                    //MD5文件检验码
} PIDS_SendFileFish;

#define SUBCMD_SENDFILEDATA         0           //正在发送数据文件
#define SUBCMD_CURFILEFINISH        1           //一个文件发送完成
#define SUBCMD_ALLFINISH            2           //全部发送完成


//***************************************************
//*client回复server的ack		client->server		*
//***************************************************

//申请下载文件
typedef struct
{
  Base      BaseFiles;
  quint8    result;
  char      fileName[48];           //文件名
} PIDS_SendState;

//丢失包申请（一般是申请一个区间的丢失数据包）
typedef struct
{
  Base      BaseFiles;
  quint64   position;             //位置
  quint32   startPkgNum;          //开始包号
  quint32   endPkgNum;            //结束包号
  quint8    result;
  char      fileName[48];         //文件名
} PIDS_AppLostPkg;

#define SUBCMD_CONNECTSUCCESS                           0xFF  //连接成功
#define SUBCMD_SUCCESS                                  0     //全部下下載完成
#define SUBCMD_APPFILE  				1     //申请下载文件					//�ر�PIDS
#define SUBCMD_APPLOSTPKG				2     //申请下载丢失包              				//����PIDS


#define SUBCMD_UPDATEXMLSUCCESS                         3     //更新的XML正确
#define SUBCMD_UPDATEXMLFROMATERR                       4     //更新的XML文件格式错误
#define SUBCMD_UPDATEXMLROOTNANMEERR                    5     //更新的XML文件格式错误
#define SUBCMD_UPDATEFILECOUNTERR                       6     //更新的XML文件格式错误



#endif // AGREEMENTMSG_H
